package com.example.icongyou.api;


import com.example.icongyou.bean.Course;
import com.example.icongyou.bean.Semester;
import com.example.icongyou.bean.StudentCourseProgress;

import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.DELETE;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * 对应后端 CourseController 的 RESTful API 接口定义
 * 基础路径: /api/courses
 */
public interface CourseApi {

    // POST /api/courses - 创建新课程
    // 后端成功时返回 Course 对象，失败时返回 String 错误信息 (409/400)
    @POST("api/courses")
    Call<Course> createCourse(@Body Course course);
    // 注意：如果需要详细处理 409 Conflict 或 400 Bad Request 的 String 消息，
    // 可能需要在调用时检查 response.code() 并解析 response.errorBody()。
    @GET("api/courses")
    Call<List<Course>> getCoursesBySemester(@Query("semesterId") String semesterId);

    @GET("api/courses/{courseId}/progress")
    Call<StudentCourseProgress> getCourseProgress(
            @Path("courseId") String courseId,
            @Query("studentId") String studentId
    );
    // GET /api/courses - 获取所有课程
    @GET("api/courses")
    Call<List<Course>> getAllCourses();

    // GET /api/courses/{id} - 根据 ID 获取单个课程
    @GET("api/courses/{id}")
    Call<Course> getCourseById(@Path("id") String courseId);

    // PUT /api/courses/{id} - 更新课程信息
    // 后端返回 String 消息
    @PUT("api/courses/{id}")
    Call<String> updateCourse(
            @Path("id") String courseId,
            @Body Course courseDetails
    );

    // DELETE /api/courses/{id} - 删除课程
    // 后端返回 204 No Content
    @DELETE("api/courses/{id}")
    Call<Void> deleteCourse(@Path("id") String courseId);

    @GET("api/semesters")
    Call<List<Semester>> getAllSemesters();
    // --- 新增: 根据教师ID查询课程列表 ---
    // 对应后端路由：GET /api/courses/teacher/{teacherId}
    @GET("api/courses/teacher/{teacherId}")
    Call<List<Course>> getCoursesByTeacherId(@Path("teacherId") Integer teacherId);
}
